#include <iostream>  // 引入标准输入输出流库
using namespace std; // 使用标准命名空间，避免每次写 std::cout/cin

// 定义结构体 equ，表示一条直线方程 Ax + By + C = 0 的系数
struct equ
{
    int A; // x 的系数
    int B; // y 的系数
    int C; // 常数项
};

/**
 * @brief 计算两条直线的交点坐标
 * 
 * @param x 第一条直线，形式为 x.A*x + x.B*y + x.C = 0
 * @param y 第二条直线，形式为 y.A*x + y.B*y + y.C = 0
 */
void cal(equ x, equ y)
{
    int rx = 0, ry = 0; // 用于存储交点的 x 和 y 坐标（整数）

    // 使用克莱姆法则计算交点
    // 注意：这里使用的是整数除法，可能导致精度丢失
    rx = (-x.C * y.B + x.B * y.C) / (x.A * y.B - x.B * y.A); // 求 x 坐标
    ry = (-x.A * y.C + x.C * y.A) / (x.A * y.B - x.B * y.A); // 求 y 坐标

    // 输出交点坐标，以空格分隔
    cout << rx << " " << ry << " ";
}

int main()
{
    int N = 0;                  // 表示直线的数量
    cin >> N;                   // 输入直线数量 N

    // 动态分配一个 equ 类型的数组，用于存储所有直线
    equ* all = new equ[N];

    // 循环读取每条直线的 A、B、C 系数值
    for (int i = 0; i < N; i++)
        cin >> all[i].A >> all[i].B >> all[i].C;

    // 遍历所有不同的直线对 (i, j)，其中 j > i
    for (int i = 0; i < N - 1; i++)
    {
        for (int j = i + 1; j < N; j++)
            cal(all[i], all[j]); // 计算并输出该对直线的交点

        cout << endl; // 每处理完一行组合后换行，使输出更清晰
    }

    // 程序结束，返回 0 表示正常退出
    return 0;
}